Linguaggi del Primo Ordine
5.1 – Linguaggi del Primo Ordine

Dalla logica proposizionale a quella del prim’ordine

L’analisi mediante logica proposizionale ha vantaggi e svantaggi.

Vantaggi

Si tratta di un’analisi relativamente semplice ed è implementabile su un computer: i connettivi diventano porte logiche, per controllare la validità di una proposizione/ragionamento basta calcolarne la tavola di verità (che è un processo algoritmico finito, quindi implementabile mediante un programma informatico, anche se molto dispendioso in termini di tempo/memoria), e così via.

Svantaggi

Si tratta di un’analisi molto grossolana!! Per esempio non permette di verificare la correttezza di un ragionamento come

Chi studia passa l’esame. Gli amici di Carlo hanno studiato, quindi passano l’esame.

Per analizzare il ragionamento precedente abbiamo bisogno di strutture linguistiche più complesse:

Chi studia passa l’esame. Gli amici di Carlo hanno studiato, quindi passano l’esame.

diventa allora \[\Big( \forall x (S(x) \to P(x)) \wedge \forall x (A(x,c) \to S(x)) \Big ) \to \forall x (A(x,c) \to P(x)).\]

La logica del prim’ordine permette di stabilire che questo ragionamento è corretto, indipendentemente dall’interpretazione dei simboli \(S,P,A,c\)!

Per esempio, se interpretiamo \(S(x)\) come “\(x\) è tedesco”, \(P(x)\) come “\(x\) è biondo”, \(A(x,y)\) come “\(x\) è cugino di \(y\)” e \(c\) come “Claudio”, il ragionamento risultante, ovvero

Tutti i tedeschi sono biondi. I cugini di Claudio sono tedeschi, quindi sono biondi.

rimarrebbe comunque corretto.

Una cosa analoga accade in matematica. Se vogliamo scrivere che in \(\mathbb{Z}\) è sempre possibile eseguire la sottrazione tra due numeri, utilizzeremo un simbolo di funzione binaria \(+\) (che di solito rappresenta la somma) e scriveremo \[\forall x \forall y \exists z (z + y = x ).\] A differenza del caso precedente, la validità di questa formula dipende però dal contesto:

Più in generale, abbiamo allora bisogno di:

  1. fissare un linguaggio \(L\) fatto di simboli di relazione, funzione e costante;

  2. stabilire una sintassi che permetta di costruire (algoritmicamente) formule che possano essere dotate di significato e analizzate;

  3. introdurre l’opportuna nozione di modello, ovvero di “realtà” in cui poter valutare le formule: questo vuol dire stabilire qual’è l’universo del discorso e attribuire un significato “concreto” agli oggetti di base, ovvero ai simboli del linguaggio \(L\);

  4. introdurre opportune regole di interpretazione dei simboli logici che permettano di interpretare tutte le formule nel modello dato e decidere se siano vere o meno in tale contesto (relazione di soddisfazione \(\models\));

  5. in questo modo, considerando tutti i possibili modelli si potrà nuovamente parlare di tautologia, contraddizione, soddisfacibilità e conseguenza logica (= validità di un ragionamento).

Logica del prim’ordine

Sintassi

Fissiamo innanzitutto una lista di simboli logici e tipografici che useremo per scrivere termini e formule:

Le lettere \(x , y , z , \dots \), eventualmente decorate con apici o pedici, indicano una generica variabile \(v_{n}\); l’insieme delle variabili viene indicato con \(Vbl\).

Linguaggi del prim’ordine

Un linguaggio \(L\) del prim’ordine consiste dei seguenti oggetti:

Ad ogni simbolo di funzione e di predicato è associato un numero intero positivo detto arietà del simbolo. I simboli di arietà \(1\), \(2\) e \(3\) si dicono, rispettivamente, simboli unari, binari e ternari. L’arietà di \(f\) o di \(P\) è indicata con \(ar ( f )\) e \(ar ( P )\).

\(Const\) è l’insieme dei simboli di costante, \(Func\) è l’insieme dei simboli di funzione e \(Rel\) è l’insieme dei simboli di relazione (del linguaggio \(L\)). Quindi \[L = Const \cup Func \cup Rel.\]

Esempio

I seguenti sono alcuni esempi di linguaggi del prim’ordine: